#pragma once

#include <grpc++/grpc++.h>
#include "../../proto/rpc.grpc.pb.h"
#include "../v3Response.hpp"

using etcdserverpb::LeaseGrantResponse;
using etcdserverpb::LeaseRevokeResponse;
using etcdserverpb::LeaseKeepAliveResponse;
using etcdserverpb::LeaseTimeToLiveResponse;
using etcdserverpb::LeaseLeasesResponse;

namespace etcdv3 {

//-----------------------------------------------------------------------------
class AsyncLeaseGrantResponse : public V3Response {
public:
    AsyncLeaseGrantResponse() {};
    void ParseResponse(LeaseGrantResponse& resp);
};

//-----------------------------------------------------------------------------
class AsyncLeaseRevokeResponse : public V3Response {
public:
    AsyncLeaseRevokeResponse() {};
    void ParseResponse(LeaseRevokeResponse& resp);
};

//-----------------------------------------------------------------------------
class AsyncLeaseKeepAliveResponse : public V3Response {
public:
    AsyncLeaseKeepAliveResponse() {};
    void ParseResponse(LeaseKeepAliveResponse& resp);
};

//-----------------------------------------------------------------------------
class AsyncLeaseTimeToLiveResponse : public V3Response {
public:
    AsyncLeaseTimeToLiveResponse() {};
    void ParseResponse(LeaseTimeToLiveResponse& resp);
};

}
